1. Field
This disclosure relates generally to data processing systems, and more specifically, to data processing systems operable in single and multi-thread modes and having multiple caches.
2. Related Art
Various processor designers have attempted to increase on-chip parallelism through superscalar techniques, which are directed to increasing instruction level parallelism (ILP), and multi-threading techniques, which are directed to exploiting thread level parallelism (TLP). A superscalar architecture attempts to simultaneously execute more than one instruction by fetching multiple instructions and simultaneously dispatching them to multiple (sometimes identical) functional units of the processor. A typical multi-threading operating system (OS) allows multiple processes and threads of the processes to utilize a processor one at a time, usually providing exclusive ownership of the processor to a particular thread for a time slice. In many cases, a process executing on a processor may stall for a number of cycles while waiting for some external resource (for example, a load from a random access memory (RAM)), thus lowering efficiency of the processor. Simultaneous multi-threading (SMT) allows multiple threads to execute different instructions from different processes in the same processor, using functional units that another executing thread or threads left unused.
In order to improve memory performance of processing systems, complex memory structures which seek to exploit the individual advantages of different types of memory have been developed. In particular, it has become common to use fast cache memory in association with larger, slower and cheaper main memory. For example, the memory in a computer system can be organized in a memory hierarchy comprising memory of typically different size and speed. Thus a computer system may typically comprise a large, low cost but slow main memory and in addition have one or more cache memory levels comprising relatively small and expensive but fast memory. During operation data from the main memory is dynamically copied into the cache memory to allow fast read cycles. Similarly, data may be written to the cache memory rather than the main memory thereby allowing for fast write cycles.
A memory operation where the processor can receive the data from the cache memory is typically referred to as a cache hit and a memory operation where the processor cannot receive the data from the cache memory is typically referred to as a cache miss. Typically, a cache miss does not only result in the processor retrieving data from the main memory but also results in a number of data transfers between the main memory and the cache. For example, if a given address is accessed resulting in a cache miss, the subsequent memory locations may be transferred to the cache memory. As processors frequently access consecutive memory locations, the probability of the cache memory comprising the desired data thereby typically increases.